Fpga having low power, fast carry chain

ABSTRACT

FPGA carry chain that does not exhibit significant leakage current. In particular, the carry chain can be switched on/off when desired. In this manner, carry chains can have their leakage currents substantially disabled when they are not in use, thus saving power. Additionally, a carry chain whose logic is separate from the logic blocks that perform the remaining arithmetic functions, and whose inputs are the input data to be added, rather than data from the logic blocks. Such a configuration reduces latency by allowing the carry chain to operate directly on the input data without need to wait on results from the logic blocks.

FIELD OF INVENTION

This disclosure relates generally to field programmable gate arrays (FPGAs). More specifically, this disclosure relates to FPGAs with low power, fast carry chains.

BACKGROUND

The rise in popularity of portable electronic devices has led to a corresponding increase in demand for low-power FPGAs. For instance, it is increasingly desirable for hand-held devices to utilize low-power FPGA controllers that do not detract from long battery life. Ongoing efforts therefore exist to develop and refine FPGAs that consume less power, and are thus more compatible with portable and hand-held applications.

Concurrently, performance demands on these same portable electronic devices continue to increase. Therefore, FPGAs used in these devices must not only consume less power, but also exhibit higher performance (e.g., high switching speeds) over time. Accordingly, efforts currently exist to develop low-power FPGAs that also exhibit higher performance.

One generally overlooked area is FPGA carry chains, i.e. the logic for moving a carry bit between successive stages during addition/subtraction operations. In particular, conventional FPGA carry chains typically consume excessive power and/or perform relatively slowly. As one example, FIG. 1 illustrates FPGA configurable logic blocks (CLBs) implementing a conventional ripple carry adder. Each logic block 10 receives two addend input bits (e.g., I0, I1), along with a carry bit C from a previous stage and the CLB is configured to produce a respective sum bit Si (i=0, 1, 2, etc.). Thus, the bottom logic block 10 of FIG. 1 adds input bits I0, I1, along with carry bit CO, to produce the respective sum bit S0 and a carry bit C1, where the carry bit is a 0 or 1 depending on the result of the addition of I0, I1 and C0. The carry bit C1 is then transmitted to the next logic block 10, where it is used in calculating the next sum S1, and so on. It can be observed that the dependency of more significant stages to receive results from carry operations of less significant stages in this ripple carry adder contribute to latency and delay given that each previous carry bit must settle into a correct state before the next addition operation can commence in the next more significant stage. That is, each logic block 10 must wait for the carry output from the previous logic block 10 to be fully determined. This delay is detrimental to the performance of FPGAs that employ such ripple carry adders. Furthermore, active carry logic typically exhibits detrimental leakage current, leading to power drain even when a carry operation is not being performed.

As another example of conventional design, FIG. 2 illustrates an FPGA where its configurable logic blocks are programmed to implement a conventional carry look-ahead adder. Each logic block 20 adds inputs I0, I1 together, along with a carry bit C, and outputs the sum S. The logic blocks 20 also output propagate and generate signals PG to a carry look-ahead block 30, based on whether a carry is propagated from a less significant stage or a carry is generated at that stage. The carry look-ahead block 30 determines from the PG signals whether a carry is to be propagated to the next block, and sends carry signal C accordingly. However, while the carry look-ahead adder helps reduce the problem of latency, the carry look-ahead block 30 still requires some time to process the PG signals and generate the correct set of carry signals C for generating a correct final sum signal, S0:Sn. Additionally, the carry look-ahead adder, like the ripple carry logic, typically exhibits a leakage current even when unused.

SUMMARY

The invention can be implemented in a number of ways.

In one embodiment, a field programmable gate array (FPGA) comprises carry logic configured to execute a carry operation, the carry logic further comprising a drain voltage terminal and a ground terminal, and supporting a current flowing through the carry logic from the drain voltage terminal to the ground terminal. The FPGA also includes a switching transistor connected to the ground terminal of the carry logic so as to support flow of the current through the switching transistor. Also included is a programmable switch connected to a gate terminal of the switching transistor and configured to disable the current by switching off a signal applied to the gate terminal.

In another embodiment, a field programmable gate array (FPGA) logic cell comprises a lookup table having first and second inputs for receiving data, and an output for transmitting a result of an operation performed on the received data. Also included is carry logic facilitating carry operations for the result, the carry logic having first and second inputs and an output. The first and second inputs of the carry logic are connected to, respectively, the first and second inputs of the lookup table.

In a further embodiment, a field programmable gate array (FPGA) logic cell comprises a lookup table having inputs for receiving input data and an output for transmitting an output corresponding to the input data. The logic cell also includes carry logic receiving the input data and facilitating determination of the output by executing a carry operation on the input data.

Other aspects and advantages of the here disclosed invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the disclosure, reference is made in the following detailed description to the accompanying drawings, in which:

FIG. 1 illustrates FPGA logic blocks implementing a conventional ripple carry adder;

FIG. 2 illustrates FPGA logic blocks implementing a conventional carry look-ahead adder;

FIG. 3 illustrates FPGA logic blocks organized in accordance with an embodiment of the present invention;

FIG. 4 illustrates details of carry logic employed in carry chains of FIG. 3; and

FIG. 5 illustrates details of carry chain switching logic employed in embodiments of FIG. 4.

Like reference numerals refer to corresponding parts throughout the drawings.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

In contrast to conventional FPGA designs where carry logic couplings such as those shown in FIGS. 1-2 provide opportune paths for undesired static current leakage, the present disclosure provides a carry chain design whose stages can be selectively depowered so as to avoid exhibiting significant leakage current. In particular, the carry chain can be switched on/off when desired. In this manner, carry chains can have their leakage currents substantially disabled when they are not in use, thus saving power.

Additionally, embodiments of the invention employ a carry chain whose logic is separate from the logic blocks that perform the remaining arithmetic functions, and whose inputs are the input data to be added, rather than data from the logic blocks. Such a configuration reduces latency by allowing the carry chain to operate directly on the input data without need to wait on results from the logic blocks.

FIG. 3 illustrates FPGA logic blocks constructed in accordance with an embodiment of the present invention. Each logic block 100 includes a lookup table (LUT) 110 with inputs I0-I3, as well as a flip-flop 120, and multiplexer 130. The LUT 110 receives input data through its inputs I0-I3, performs its programmed operations on the input data, and sends the output to the multiplexer 130, which combines it with the output of the flip-flop 120. The logic block 100 also includes carry logic 140, which receives inputs I0, I1, and CI (the CO from the preceding carry logic 140), determines a carry bit, and sends the output signal CO to input I3 of the LUT 110 corresponding to the next most significant bit. The CO signal is also sent through programmable point 150. The on/off state of carry logic 140 is controlled by programmable point 160. In known fashion, the various FPGA logic blocks shown contain/utilize various programmable points, or configuration bits, including those shown as well as others that are not. Each is typically programmed prior to operation, often on power up, and controls the configuration of various blocks or portions thereof.

When the LUT 110 is to perform an addition or subtraction operation on the input data from inputs I0-I1, carry logic 140 is first turned on via the programmable point 160. Based on the inputs I0, I1, and CI, the carry logic 140 then determines whether a carry is required and, if so, sends the corresponding bit as a CO signal to the LUT 110 corresponding to the next most significant bit. That is, locating the carry chain on the input side of the LUTs 110 allows all carry bits to be determined as the input data I0, I1 are transmitted, thus reducing delay.

The operation of carry logic 140 in determining the carry bit, i.e. determining the correct value of CO, is known. FIG. 4 illustrates one exemplary embodiment detailing the logic implemented in carry blocks 140. Here, OR gate 200 and AND gate 210 perform their respective logical operations on input signals I0 and I1, and send their output to AND gate 220 and OR gate 230, respectively. AND gate 220 performs an AND operation with the output of OR gate 200 and the input signal CI (i.e., the carry bit from the preceding carry logic 140). OR gate 230 then operates on the outputs of AND gate 220 and AND gate 210, and the output of OR gate 230 is the output signal CO of carry block 140. In this manner, each carry block 140 performs the operation CO=I0*I1+I0*CI+I1*CI. The invention encompasses carry blocks 140 that perform this operation in any known manner.

Once the carry blocks 140 perform their carry operations, they send their output signal CO to both the next carry block 140 in the chain, and its LUT 110. In the embodiment of FIG. 3, the CO signal of each carry block 140 becomes the CI signal of the next carry block 140 in the chain, and is also sent to the I3 input of the next LUT 110, via programmable point 150. Each LUT 110 then applies the value of the carry bit (i.e., the CO signal to its input I3) to its addition/subtraction operation, perhaps by implementing an XOR gate (not shown) having I0 and I1 as inputs, and whose output is fed back to the I0 input of the same LUT 110 via the flip-flop 120. The carry block 140 then utilizes this new I0 value to determine the carry value to be sent to the next more significant bit. In this manner, each LUT 110 correctly takes into account the carry from the next less significant digit, and alters its value of I0 so that the correct carry value is sent to the next more significant bit. Additionally, as the carry blocks 140 and XOR gates of each LUT 110 operate on the input data without reliance on any other computational results, the configuration of FIG. 4 allows for rapid determination of carry values without need to wait for each LUT 110 to carry out its calculations. The configuration of FIG. 4 thus allows for faster logic blocks 100.

It should be noted that LUT 110 is shown in FIG. 4 as a 4-input LUT. However, the invention contemplates any hardware suitable for use in FPGA logic blocks 110, including LUTs having any number of inputs, so long as these inputs can be connected to the inputs of carry blocks 140.

As described above, carry logic 140 can also be selectively switched on when needed (i.e., when an addition/subtraction operation is to be performed), and off otherwise. FIG. 5 illustrates details of carry chain switching logic employed to implement this feature. Carry logic 140 includes logic 300 for executing the above-described carry operation. The logic 300 includes any logic required for the carry operation, such as that shown in FIG. 4. In FIG. 5, the logic 300 includes elements such as an inverter 302 connected between voltage source terminal VDD and a ground terminal, although the invention contemplates logic 300 that can include any elements or devices that can be used in carry logic.

A switching transistor 304 is placed between logic 300 and ground, so that current flowing from VDD to ground runs through the switching transistor 304. In particular, this current can be a leakage current that flows from VDD to ground even when logic 300 is not in active operation. The switching transistor 304 has a gate terminal connected to programmable point 160, as shown. In this manner, programmable point 160 can selectively apply voltage to the gate terminal of switching transistor 304. When such a gate voltage is applied, switching transistor 304 allows current to pass from VDD, through any intervening logic 300, to ground, powering the carry logic 140. When programmable point 160 switches off this gate voltage, switching transistor 304 interrupts this current, effectively switching off power to the carry logic 140. In this manner, it can be observed that power to carry logic 140 can be switched off whenever a carry chain is not needed, to prevent leakage currents from the carry chain. Such switching can occur via programmable point 160 or any other hardware by which voltage can be applied to the gate terminal of switching transistor 304.

While FIG. 5 shows leakage current (or other current) disabled via switching transistor 304, the invention contemplates any device or devices capable of switchably cutting power to carry logic 140. Similarly, while a single switching transistor 304 is shown, the invention contemplates any number of such transistors 304, positioned between the power supply terminal(s) VDD of carry logic 104 and its ground terminal(s) so as to switchably interrupt flow of current through carry logic 140. Likewise, a switching transistor 304 (or any other switch configuration of the invention) can be employed between ground and any other component of carry logic 140. For example, a switching transistor can be placed between ground and any one or more of the components 200-230 of FIG. 4.

The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the invention. In other instances, well known devices are shown in block form in order to avoid unnecessary distraction from the underlying invention. Thus, the foregoing descriptions of specific embodiments of the present invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Rather, many modifications and variations are possible in view of the above teachings. For example, the invention contemplates carry logic utilizing any structures or devices capable of executing arithmetic carry operations properly. Similarly, the switching transistor or other device(s) can be placed anywhere appropriate to cut off leakage current through the carry logic 104, such as the head, foot, or any point inbetween. The various drawings are not necessarily to scale. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents. 

1. A field programmable gate array (FPGA), comprising: carry logic configured to execute a carry operation, the carry logic further comprising a drain voltage terminal and a ground terminal, and supporting a current flowing through the carry logic from the drain voltage terminal to the ground terminal; a switching transistor connected to the ground terminal of the carry logic so as to support flow of the current through the switching transistor; and a programmable switch connected to a gate terminal of the switching transistor and configured to disable the current by switching off a signal applied to the gate terminal.
 2. The FPGA of claim 1, wherein the current is a leakage current.
 3. The FPGA of claim 1, wherein the switching transistor has a first terminal in electrical communication with the drain voltage terminal and a second terminal in electrical communication with the ground terminal.
 4. A field programmable gate array (FPGA) logic cell, comprising: a lookup table having first and second inputs for receiving data, and an output for transmitting a result of an operation performed on the received data; and carry logic facilitating carry operations for the result, the carry logic having first and second inputs and an output; wherein the first and second inputs of the carry logic are connected to, respectively, the first and second inputs of the lookup table.
 5. The FPGA logic cell of claim 4, wherein the lookup table is a 4-input lookup table.
 6. The FPGA logic cell of claim 4: wherein the carry logic is a first carry logic; wherein the lookup table has a third input; and wherein an output of a second carry logic is connected to the third input of the lookup table.
 7. The FPGA logic cell of claim 6: wherein the lookup table further comprises an exclusive OR (XOR) gate having first and second inputs for receiving data, and an output for transmitting the result of an XOR operation performed on the received data; and wherein the first input of the XOR gate is connected to the first input of the lookup table, the second input of the XOR gate is connected to the second input of the lookup table, and the output of the XOR gate is in electronic communication with the first input of the carry logic.
 8. The FPGA logic cell of claim 4: wherein the carry logic is a first carry logic having a third input; and wherein the third input of the first carry logic is connected to an output of a second carry logic.
 9. The FPGA logic cell of claim 8; wherein the first input of the first carry logic is an (I0) input, the second input of the first carry logic is an (I1) input, the output of the first carry logic is a (CO) output, and the third input of the first carry logic is a (CI) input; and wherein the carry logic is further configured to perform a carry function CO=I0*I1+I0*CI+I1*CI.
 10. A field programmable gate array (FPGA) logic cell, comprising: a lookup table having inputs for receiving input data and an output for transmitting an output corresponding to the input data; and carry logic receiving the input data and facilitating determination of the output by executing a carry operation on the input data.
 11. The FPGA logic cell of claim 10: wherein the lookup table is a first lookup table; and wherein the carry logic further comprises an output connected to an input of a second lookup table, so as to transmit a result of the carry operation to the input of the second lookup table.
 12. The FPGA logic cell of claim 10: wherein the inputs of the lookup table include first, second, and third inputs; wherein the carry logic further comprises first and second inputs for receiving the input data, and an output; and wherein the first input of the carry logic is connected to the first input of the lookup table, and the second input of the carry logic is connected to the second input of the lookup table.
 13. The FPGA logic cell of claim 12, wherein the lookup table further comprises an exclusive OR (XOR) gate having first and second inputs for receiving data, and an output for transmitting the result of an XOR operation performed on the received data; and wherein the first input of the XOR gate is connected to the first input of the lookup table, the second input of the XOR gate is connected to the third input of the lookup table, and the output of the XOR gate is in electronic communication with the first input of the carry logic.
 14. The FPGA logic cell of claim 12: wherein the carry logic is a first carry logic further comprising a third input; and wherein the third input of the first carry logic is connected to an output of a second carry logic.
 15. The FPGA logic cell of claim 14; wherein the first input of the first carry logic is an (I0) input, the second input of the first carry logic is an (I1) input, the output of the first carry logic is a (CO) output, and the third input of the first carry logic is a (CI) input; and wherein the carry logic is further configured to perform a carry function CO=I0*I1+I0*CI+I1*CI.
 16. The FPGA logic cell of claim 10, wherein the lookup table is a 4-input lookup table. 